package org.example.learn;

import java.util.ArrayList;
import java.util.List;

/**
 * JVM的参数配置：
 * -Xms10m -Xmx10m -XX:+PrintGCDetails -XX:MaxDirectMemorySize=5m
 * GC回收时间过长会抛出OutOfMemoryError.过长的定义是，超过98%的时间用过GC，并且回收了不到2%的堆内存
 * 那就是GC清理的这么点内存很快就会被填满了，迫使GC再次执行，这样就会形成恶性循环
 * CPU的使用率一直是100%，而GC却没有任何效果
 */
public class GcOverheadDemo {
    public static void main(String[] args) {
        int i=0;
        List<String> list = new ArrayList<>();
        try{
           while (true){
               list.add(String.valueOf(++i).intern());
           }
        }catch (Throwable e){
            System.out.println("**********");
            e.printStackTrace();
            throw  e;
        }
    }
}
